Skip to main content
Version: v2.10.0

Setup Yeedu Control Plane

This page covers standing up the Yeedu Control Plane on Amazon EKS, in four numbered sections: credentials setup, downloading the control plane files, deploying Yeedu services on Kubernetes, and configuring the control plane properties. The variable reference in section 4.2 lists every property in yeedu-connection.properties and yeedu-system-config.properties, along with its default value and whether it is required. Two of those matter for this particular installation: YEEDU_VERSION is v2.10.1, and YEEDU_DEPLOYMENT_MODE has to be eks rather than the docker default. It all ends with ./yeedu-core-services.sh start.

1. Credentials Setup

Create two files for to store below mentioned credentials:

  1. Cloud Credentials:

    • Create cloud_credentials.json.
    • Paste JSON credentials of AWS in the specified format.
  2. Registry Credentials:

    • Create docker_registry_credentials.json.
    • Paste JSON credentials for your container registry.

Credential Format for Amazon Web Services

{
"AWS_ACCESS_KEY_ID": "<access_key>",
"AWS_SECRET_ACCESS_KEY": "<secret_key>",
"AWS_DEFAULT_REGION": "<region>",
"AWS_PROFILE": "yeedu"
}
note

Replace all placeholder values (e.g., <secret_key>, <access_key>) with your actual credentials. Keep these files safe and secure, as they contain sensitive information.

2. Download Yeedu Control Plane Files

To initiate your Yeedu Control Plane Setup, download the essential scripts from the yeedu-runtime.

  1. Open a terminal or command prompt.

  2. Extract the Yeedu Runtime Setup Files:

    tar -xzvf /local/path/to/local/storage/yeedu-runtime.tar
note

Reach out to us for access to the Yeedu release artifacts and to the container registry that holds the Yeedu images. On AWS we publish the release artifacts under s3://yeedu-softwares/releases/<YEEDU_VERSION>/, and we grant your account read access to that bucket.

  1. Change the working directory to yeedu-runtime:
    cd yeedu-runtime

3. Deploy Yeedu Services on Kubernetes

3.1. Provide execute permissions

After updating properties, go to the Yeedu Control Plane folder. Find yeedu-core-services.sh and setup-ingress.sh script. Grant execute permissions:

chmod +x yeedu-core-services.sh
chmod +x setup-ingress.sh

3.2. Authenticate to Kubernetes Cluster (Elastic Kubernetes Service)

Authenticate to the Kubernetes Cluster using the AWS Cloud CLI and kubectl commands provided below.

aws configure
aws eks --region REGION update-kubeconfig --name CLUSTER_NAME

Validate successful cluster authentication by running the command below:

kubectl config get-contexts

3.3. Update SSL Certificates

In the yeedu-runtime directory, find the ssl folder. Update yeedu.crt and yeedu.key with the your specific SSL certificate and SSL RSA key. They're used by the Yeedu Ingress Controller in Kubernetes.

3.4. Create DNS Entries

Create DNS entries for the Ingress record in the AWS cloud environment. Ensure entries are created for all configured hostnames in the Ingress. Execute the following command:

aws route53 change-resource-record-sets --hosted-zone-id YOUR_HOSTED_ZONE_ID --change-batch '{
"Changes": [{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "<dns>",
"Type": "A",
"TTL": 300,
"ResourceRecords": [{ "Value": "<ip>" }]
}
}]
}'

4. Configure Yeedu Control Plane Properties

After downloading the essential files, customize your Yeedu environment by adjusting key configuration settings. Update the following property files to reflect your specific infrastructure and cloud provider details.

4.1. Configuration Files

  1. yeedu-connection.properties:

    • This file connects Yeedu to essential services like Postgres, RabbitMQ, and Redis. Update connection parameters based on your service configurations, including database hostnames, usernames, and passwords.
  2. yeedu-system-config.properties:

    • This file manages cloud-based services such as Object Storage and Container Registry. Align settings with your chosen cloud provider and configurations for seamless integration.
note

Uncomment and provide input values for the properties specified in the files. We give a detailed explanation of each parameter in the respective property files.

4.2. Variables Reference

4.2.1. yeedu-connection.properties

Metadata DB

VariableDescriptionDefault ValueRequired
YEEDU_DEPLOY_LOCAL_POSTGRESEnable local Postgres deploymenttrueYes
YEEDU_PG_DBName of the Postgres databaseyeeduYes
YEEDU_PG_USERUsername for Postgres connectionpostgresYes
YEEDU_PG_PASSWORDPassword for Postgres userpostgresYes
YEEDU_PG_HOSTNAMEHostname or IP address of the Postgres serverEndpoint Url of the serviceYes
YEEDU_PG_PORTPort number for the Postgres server5432No
YEEDU_PG_SSL_ENABLEDEnable SSL encryption for Postgres connectionfalseNo
YEEDU_PG_MIN_CONNECTIONSMinimum size of the Postgres connection pool15No
YEEDU_PG_MAX_CONNECTIONSMaximum size of the Postgres connection pool200No

Messaging Service

VariableDescriptionDefault ValueRequired
YEEDU_DEPLOY_LOCAL_RABBITMQEnable local RabbitMQ deploymenttrueYes
YEEDU_MQ_USERUsername for RabbitMQ connectionguestYes
YEEDU_MQ_PASSWORDPassword for RabbitMQ userguestYes
YEEDU_MQ_PORTPort number for RabbitMQ5672No
YEEDU_MQ_UI_PORTPort number for RabbitMQ management UI15672No
YEEDU_MQ_UI_HOSTNAMEHostname for RabbitMQ management UIEndpoint Url of the serviceYes
YEEDU_MQ_HOSTNAMEHostname or IP address of the RabbitMQ serverEndpoint Url of the serviceYes
YEEDU_MQ_VHVirtual host for RabbitMQ"/"No
YEEDU_MQ_SSL_ENABLEDEnable SSL encryption for RabbitMQ connectionfalseNo

Redis Cache

VariableDescriptionDefault ValueRequired
YEEDU_DEPLOY_LOCAL_REDISEnable local Redis deploymenttrueYes
YEEDU_REDIS_PASSWORDPassword for RedisadminNo
YEEDU_REDIS_PORTPort number for Redis6379No
YEEDU_REDIS_HOSTNAMEHostname or IP address of the Redis serverEndpoint Url of the serviceYes
YEEDU_REDIS_SSL_ENABLEDEnable SSL encryption for Redis connectionfalseNo

LDAP Service

VariableDescriptionDefault ValueRequired
YEEDU_DEPLOY_LOCAL_LDAPEnable local LDAP deploymenttrueYes
YEEDU_AUTH_LDAP_ORGANISATIONLDAP organization nameyeeduYes
YEEDU_AUTH_LDAP_DOMAINLDAP domainyeedu.comYes
YEEDU_AUTH_LDAP_ADMIN_PASSWORDPassword for LDAP administratorNdbk5LgbYes
YEEDU_AUTH_LDAP_HOSTNAMEHostname or IP address of the LDAP serverEndpoint Url of the serviceYes
YEEDU_AUTH_LDAP_PORTPort number for LDAP server389No
YEEDU_AUTH_LDAP_BASE_DNBase DN for LDAPdc=yeedu,dc=comYes
YEEDU_AUTH_LDAP_BIND_DNBind DN for LDAPcn=admin,dc=yeedu,dc=comYes
YEEDU_AUTH_LDAP_BIND_PASSWORDPassword for LDAP bind userNdbk5LgbYes
YEEDU_AUTH_LDAP_SSL_ENABLEDEnable SSL encryption for LDAP connectionfalseNo
YEEDU_AUTH_LDAP_GROUP_SEARCH_FILTERLDAP query filter used to search for groups<YOUR_LDAP_GROUP_SEARCH_FILTER>No
YEEDU_AUTH_LDAP_USER_SEARCH_FILTERLDAP query filter used to search for users<YOUR_LDAP_USER_SEARCH_FILTER>No
YEEDU_AUTH_LDAP_USER_GROUPS_SEARCH_FILTERFilter to retrieve all groups of which a user is a member<YOUR_LDAP_USER_GROUPS_SEARCH_FILTER>No
YEEDU_AUTH_PLATFORM_ADMIN_USERNAMESComma-separated usernames granted platform-admin rightsYSU0000No

REST-API

VariableDescriptionDefault ValueRequired
YEEDU_RESTAPI_PORTPort number for REST API server8080No
YEEDU_RESTAPI_HOSTNAMEHostname or IP address of REST API serverEndpoint Url of the serviceYes
YEEDU_SECRET_KEYSecret key for authentication and encryptionyeeduNo
YEEDU_RESTAPI_LOG_LEVELLog level for REST API server (e.g., info, debug)infoNo
YEEDU_RESTAPI_SSL_ENABLEDEnable SSL encryption for REST API connectionfalseNo
YEEDU_RESTAPI_REPLICA_COUNTNumber of replicas/instances for REST API server1No

Vault

VariableDescriptionDefault ValueRequired
YEEDU_RESTAPI_VAULT_HOSTNAMEHostname or IP address of the Vault serverHost's detected IP addressYes
YEEDU_RESTAPI_VAULT_PORTPort number for Vault8200No
YEEDU_RESTAPI_VAULT_UI_PORTPort number for the Vault UI9200No
YEEDU_RESTAPI_VAULT_AUTH_TYPEAuthentication type used against VaultBASIC_AUTHNo
YEEDU_RESTAPI_VAULT_MOUNT_PREFIXVault mount prefix for Yeedu credentialsyeedu/credentialsNo
YEEDU_RESTAPI_VAULT_SSL_ENABLEDEnable SSL encryption for the Vault connectionfalseNo

Yeedu UI

VariableDescriptionDefault ValueRequired
YEEDU_UI_HOSTNAMEHostname or IP address of the Yeedu UIHost's detected IP addressYes
YEEDU_UI_PORTPort number for the Yeedu UI5173No
YEEDU_UI_SSL_ENABLEDEnable SSL encryption for the Yeedu UIfalseNo

History Server

VariableDescriptionDefault ValueRequired
YEEDU_HISTORY_SERVER_WEB_PORTPort number for History Server web interface10000No
YEEDU_HISTORY_SERVER_WEB_HOSTNAMEHostname for History Server web interfaceHost's detected IP addressNo
YEEDU_HISTORY_SERVER_WEB_SSL_ENABLEDTo Enable/Disable History server on HTTPSfalseNo

Monitor

VariableDescriptionDefault ValueRequired
YEEDU_GRAFANA_HOSTNAMEHostname or IP address of Grafana serverEndpoint Url of the serviceYes
YEEDU_GRAFANA_PORTPort number for Grafana3000No
YEEDU_GRAFANA_USERNAMEUsername for Grafana loginYSU0000No
YEEDU_GRAFANA_PASSWORDPassword for Grafana loginYSU0000No
YEEDU_GRAFANA_LDAP_USER_GROUP_CNLDAP user group Common Name (CN) for Grafanacn=yeedu-user,ou=groups,dc=yeedu,dc=comNo
YEEDU_GRAFANA_LDAP_USER_BASE_DNLDAP user base DN for Grafanaou=users,dc=yeedu,dc=comNo
YEEDU_GRAFANA_LDAP_GROUP_SEARCH_BASE_DNSLDAP group search base for Grafanaou=groups,dc=yeedu,dc=comNo
YEEDU_GRAFANA_SSL_ENABLEDTo Enable/Disable Grafana server on HTTPSfalseNo

InfluxDB

VariableDescriptionDefault ValueRequired
YEEDU_INFLUXDB_HOSTNAMEHostname or IP address of InfluxDB serverEndpoint Url of the serviceYes
YEEDU_INFLUXDB_PORTPort number for InfluxDB8086No
YEEDU_INFLUXDB_DBName of the InfluxDB databaseinfluxNo
YEEDU_INFLUXDB_USERNAMEUsername for InfluxDB loginadminNo
YEEDU_INFLUXDB_PASSWORDPassword for InfluxDB loginyeeduadminNo
YEEDU_INFLUXDB_TOKENThe authentication token for InfluxDByeedu-admin-secret-tokenNo
YEEDU_INFLUXDB_ORGANISATIONOrganization of InfluxDByeeduNo

Cache Proxy

VariableDescriptionDefault
YEEDU_CACHE_PROXY_ENABLEDEnable the Cache Proxyfalse
YEEDU_CACHE_PROXY_HOSTNAMEHostname for Cache ProxyHost's detected IP address
YEEDU_CACHE_PROXY_PORTPort for Cache Proxy8765
YEEDU_CACHE_PROXY_SSL_ENABLEDEnable SSL for Cache Proxyfalse

Scheduler

VariableDescriptionDefault
YEEDU_SCHEDULER_HOSTNAMEScheduler hostHost's detected IP address
YEEDU_SCHEDULER_PORTScheduler port8081
YEEDU_SCHEDULER_USERNAMEScheduler usernameairflow
YEEDU_SCHEDULER_PASSWORDScheduler passwordairflow
YEEDU_SCHEDULER_SSL_ENABLEDEnable SSL for Schedulerfalse
YEEDU_SCHEDULER_REPLICA_COUNTNumber of scheduler replicas1

Assistant

VariableDescriptionDefault
YEEDU_ASSISTANT_ENABLEDEnable the Yeedu Assistantfalse
YEEDU_ASSISTANT_HOSTNAMEHostname of Yeedu AssistantHost's detected IP address
YEEDU_ASSISTANT_PORTAssistant API port8000
YEEDU_ASSISTANT_SSL_ENABLEDSSL toggle for Assistantfalse
YEEDU_ASSISTANT_FASTAPI_PORTFastAPI internal service port8001
YEEDU_ASSISTANT_REDIS_NAMESPACERedis cache namespace for Assistantyeedu_ai_assistant
YEEDU_ANTHROPIC_API_KEYAPI key for Anthropic LLM integration<ANTHROPIC_API_KEY>
YEEDU_OPENAI_API_KEYAPI key for OpenAI LLM integration<OPENAI_API_KEY>
note

Set either YEEDU_ANTHROPIC_API_KEY or YEEDU_OPENAI_API_KEY, depending on the LLM provider you configure for the Assistant. Both are read only when YEEDU_ASSISTANT_ENABLED is true.

Yeedu Functions

VariableDescriptionDefault
YEEDU_FUNCTIONS_PROXY_HOSTNAMEHostname for Functions ProxyHost's detected IP address
YEEDU_FUNCTIONS_SSL_ENABLEDEnable SSL for Functions Proxyfalse
YEEDU_FUNCTIONS_SCHEDULER_PORTScheduler port for Functions service5171
YEEDU_FUNCTIONS_PROXY_PORTProxy port for Functions service5172

4.2.2. yeedu-system-config.properties

Yeedu Version

VariableDescriptionValueRequired
YEEDU_VERSIONSpecifies the version of the Yeedu platform to be deployed.v2.10.1Yes

Deployment Parameters

VariableDescriptionDefault ValueRequired
YEEDU_DEPLOYMENT_MODEDeployment mode. Allowed values: docker, eks, aks, gke, minikubedockerYes
caution

The default is docker, so for this Amazon EKS installation you'll need to set YEEDU_DEPLOYMENT_MODE=eks.

System Properties

VariableDescriptionDefault ValueRequired
YEEDU_RUN_INIT_SERVICERuns the initialization service during deployment.trueYes
YEEDU_ENVIRONMENTSpecifies the deployment environment (dev, prod, staging, etc.).devYes
YEEDU_ENABLE_GRAFANA_MONTORINGEnables Grafana monitoring for system metrics.trueNo
YEEDU_DEPLOYMENT_LOG_LEVELSets the log level for deployment (debug, info, warn, error).infoNo
YEEDU_ASSISTANT_ENABLEDEnables AssistantX features within the platform.falseNo
YEEDU_ENABLE_SCHEDULEREnables the Yeedu Scheduler component.falseNo
YEEDU_CACHE_PROXY_ENABLEDEnables the Cache Proxy service.falseNo

System Object Storage Configuration

VariableDescriptionDefault ValueRequired
YEEDU_SYSTEM_CLOUD_PROVIDERCloud provider for object storage-Yes
YEEDU_SYSTEM_PROJECT_IDProject ID for object storage-Yes
YEEDU_SYSTEM_OBJECT_STORAGEObject storage bucket or container name-Yes
YEEDU_SYSTEM_CLOUD_CREDENTIALS_FILE_PATHFile path to cloud provider credentials (JSON)-Yes
YEEDU_SYSTEM_OBJECT_STORAGE_ENCRYPTION_ENABLEDEnable object storage encryption-Yes
YEEDU_SYSTEM_SPARK_EVENTS_RETENTION_DAYSRetention period for spark events90Yes
YEEDU_SYSTEM_NFS_HOSTNAMEHostname of the NFS server<your-hostname>Yes
YEEDU_SYSTEM_NFS_MOUNT_TARGETThe mount path on the NFS server<your-mount-path>Yes

System Container Registry Configuration

VariableDescriptionDefault ValueRequired
YEEDU_SYSTEM_DOCKER_REGISTRY_PROVIDERDocker registry provider-Yes
YEEDU_SYSTEM_DOCKER_REGISTRY_URLDocker registry URL-Yes
YEEDU_SYSTEM_DOCKER_REGISTRY_CREDENTIALS_FILE_PATHFile path to Docker registry credentials (JSON)-Yes

Kubernetes Parameters

VariableDescriptionDefault ValueRequired
YEEDU_SYSTEM_KUBERNETES_NAMESPACENamespace for KubernetesyeeduNo
YEEDU_SYSTEM_KUBERNETES_STATIC_IPStatic IP address for NGINX in Kubernetes<your-static-ip>No
note

"Required" indicates whether the variable is required for Yeedu setup

4.3. Setup Ingress in Provided Namespace

Run the following command to setup Nginx Ingress Controller:

Execute the setup ingress script ./setup-ingress.sh, it will deploy the ingress.

After the ingress is created, obtain the IP address:

kubectl get ingress -n $YEEDU_SYSTEM_KUBERNETES_NAMESPACE

4.4. Deploy Yeedu Control Plane on Kubernetes

Execute the Yeedu Control Plane setup script yeedu-core-services.sh. Run ./yeedu-core-services.sh --help for more information. This script installs kubectl, Helm, Helmfile CLI, psql, rabbitmqadmin, and Redis CLI's on the machine, adapting to the machine's architecture and OS and setup up Yeedu Control Plane on Kubernetes.

Run the following command to start the Yeedu Control Plane on Kubernetes:

  • Start the services
./yeedu-core-services.sh start
  • Stop the services
./yeedu-core-services.sh stop
  • Restart the services
./yeedu-core-services.sh restart
  • Clean the services and delete data
./yeedu-core-services.sh clean

After executing these commands, the script generates necessary secrets, configmaps, deployments, pods, and services to run Yeedu Services on Kubernetes. Access the Yeedu RestAPI at the configured YEEDU_RESTAPI_HOSTNAME URL with HTTPS TLS termination provided by the ingress.

The script writes a timestamped deployment log under $HOME/.yeedu/deployment/logs/ and prints its path when it starts. If a step fails, that's the file to check.